其他
面试官:Mybatis中 Dao接口和XML文件的SQL如何建立关联?
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
<select id="getUserById" resultType="user">
select * from user
<where>
<if test="uid!=null">
and uid=#{uid}
</if>
</where>
</select>
它对应的SqlSource对象看起来应该是这样的:
① id:全限定类名+方法名组成的ID ② sqlSource:当前SQL标签对应的SqlSource对象
到目前为止,XML就解析完成了,当我们执行Mybatis方法的时候,就可以通过 “全限定类名+方法名” 找到 MappedStatement 对象,然后解析里面的SQL内容并进行执行即可。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.viewscenes.netsupervisor.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
public class DefaultSqlSession implements SqlSession {
public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) {
try {
MappedStatement ms = configuration.getMappedStatement(statement);
return executor.query(ms,
wrapCollection(parameter), rowBounds, Executor.NO_RESULT_HANDLER);
}
}
}
SqlSource以及动态标签SqlNode MappedStatement对象 Spring 工厂Bean 以及动态代理 SqlSession以及执行器
往期推荐